package cn.yinyu.queue.module.ecg;

import cn.yinyu.queue.module.ecg.service.queue.BedQueueBO;
import jodd.typeconverter.impl.LocalTimeConverter;

import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Utils {
    public static LocalTime parseTime(String strTime) {
        String regex = "(\\d+)[:：](\\d+)";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(strTime);

        if (!matcher.find())
            return null;

        // 获取整个匹配的字符串
        String fullMatch = matcher.group();

        // 获取第一个捕获组（小时）
        String strOpenHour = matcher.group(1);

        // 获取第二个捕获组（分钟）
        String strOpenMinute = matcher.group(2);

        LocalTime localTime = LocalTime.of(Integer.valueOf(strOpenHour), Integer.valueOf(strOpenMinute));
        return localTime;
    }

    public static List<LocalTime> parseOpeningTime(String strOpeningTime) {
        String regex = "(\\d+)[:：](\\d+)~(\\d+)[:：](\\d+)";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(strOpeningTime);

        if (!matcher.find())
            return null;

        // 获取整个匹配的字符串
        String fullMatch = matcher.group();

        // 获取第一个捕获组（小时）
        String strOpenHour = matcher.group(1);

        // 获取第二个捕获组（分钟）
        String strOpenMinute = matcher.group(2);

        // 获取第一个捕获组（小时）
        String strCloseHour = matcher.group(3);

        // 获取第二个捕获组（分钟）
        String strCloseMinute = matcher.group(4);

        LocalTime localOpenTime = LocalTime.of(Integer.valueOf(strOpenHour), Integer.valueOf(strOpenMinute));
        LocalTime localCloseTime = LocalTime.of(Integer.valueOf(strCloseHour), Integer.valueOf(strCloseMinute));
        List openCloseTime = new ArrayList<LocalTime>();
        openCloseTime.add(localOpenTime);
        openCloseTime.add(localCloseTime);
        return openCloseTime;
    }

    public static String  formatRoomBed(Long roomId, String bedNo) {
        return String.format("%09d%s", roomId, bedNo);
    }

    public static List<LocalTime> parseTimeSlotList(String strTimeSlotList, Integer timeslotLength) {
        List<LocalTime> localTimeList = new ArrayList<>();

        // 7:30,8:30,9:30,10:30,11:30,12:30,13:30,14:30,15:30
        String[] arrTimeSlotItemStr = strTimeSlotList.split(",|，");
        Arrays.stream(arrTimeSlotItemStr).forEach( strTimeSlot -> {
            String regex = "(\\d+)[:：](\\d+)";
            Pattern pattern = Pattern.compile(regex);
            Matcher matcher = pattern.matcher(strTimeSlot);
            if (!matcher.find())
                return;

            // 获取整个匹配的字符串
            String fullMatch = matcher.group();

            // 获取第一个捕获组（小时）
            String strHour = matcher.group(1);

            // 获取第二个捕获组（分钟）
            String strMinute = matcher.group(2);

            LocalTime localTimeSlot = LocalTime.of(Integer.valueOf(strHour), Integer.valueOf(strMinute));
            localTimeList.add( localTimeSlot );
        } );

        return localTimeList;
    }
}

